Skip to main content

A/B测试模块

info

使用时注意模块版本需要与采集 SDK 版本保持一致


模块集成

  1. 添加 GrowingModule_ABTesting Package
  1. 在 AppDelegate.swift 中导入 import GrowingModule_ABTesting

模块配置

模块中提供了相关配置:

配置接口参数类型是否必填默认值说明
abTestingRequestIntervalUInt5单个实验 TTL 时长,超出 TTL 时获取对应实验则重新请求;单位分钟
abTestingServerHostStringhttps://ab.growingio.com设置AB分流服务请求地址,SaaS取默认值
abTestingRequestTimeoutTimeInterval5ABTesting 获取实验配置的请求超时时间;单位秒
let config = AutotrackConfig(accountId: "YourAccountId")
config?.dataCollectionServerHost = "YourServerHost"
config?.dataSourceId = "YourDatasourceId"
config?.urlScheme = "YourURLScheme"

// ABTesting 配置地址
config?.abTestingServerHost = "YourABTestingServerHost"
// 单个实验 TTL 时长
config?.abTestingRequestInterval = 5
// 获取实验配置的请求超时时间
let networkConfig = NetworkConfig()
networkConfig.abTestingRequestTimeout = 2.0
config?.networkConfig = networkConfig

Autotracker.start(config!, launchOptions: launchOptions)

获取实验配置

根据传入的 layerId,获取实验配置变量

ABTesting.fetchExperiment(_ layerId: String, completedBlock: (ABTExperiment?) -> Void)
点击查看如何获取layerId(实验层ID)
参数参数类型是否必填默认值说明
layerIdStringnil实验层 id
completedBlock(ABTExperiment?) -> Voidnil根据返回的 experiment 判断,若 experiment 为 nil,则为请求失败,请按需重试;若 experiment.experimentId 或 experiment.strategyId 为 nil,则未命中实验
ABTesting.fetchExperiment("Put layerId here") { experiment in
guard let exp = experiment else {
return
}

if let experimentId = exp.experimentId, experimentId.count > 0,
let strategyId = exp.strategyId, strategyId.count > 0 {
// 命中实验
// 获取实验配置参数
let variables = exp.variables
} else {
// 未命中实验
}
}